
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <div style="display: flex; align-items: center; justify-content: center;">
        <canvas id="canvas" width="1000" height="500"></canvas>
    </div>


    <script>
        // 非零填充
        // 其实我们的填充和顺时针逆时针有关系，但不是简单的顺逆时针的问题
        // 非零填充的概念 :
        // 从任何一个区域向画布最外层移动
        // 按照经历最少的边数量计算
        // 其中经历的顺时针边，记录为 +1
        // 经历的逆时针边，记录为 -1
        // 只要最终总和不为 零，那么该区域填充
        // 如果最终总和为 零，那么该区域不填充

        const canvas = document.querySelector('#canvas')
        const ctx = canvas.getContext('2d')


        // 顺时针绘制
        ctx.moveTo(100, 50);
        ctx.lineTo(200, 50);
        ctx.lineTo(200, 150);
        ctx.lineTo(100, 150);
        ctx.lineTo(100, 50);
        // 逆时针绘制
        ctx.moveTo(150, 100);
        ctx.lineTo(150, 200);
        ctx.lineTo(250, 200);
        ctx.lineTo(250, 100);
        ctx.lineTo(150, 100);

        ctx.lineWidth = 2;
        ctx.strokeStyle = '#000';
        ctx.stroke();

        // 4. 填充
        ctx.fill()

    </script>
    
</body>
</html>